package de.dhbw.mannheim.wi.projektarbeit;

import java.io.*;

/**
 * Diese Klasse dient dem Auslesen von Dateien.
 * 
 * @author Johann Meister
 * @version 1.0 20110601
 */
public class Datei {
	
	//Attribute der Klasse Datei
	/**
	 * Wird mit einem BufferedReader-Objekt verknüpft.
	 */
	private BufferedReader datei;
	
	/**
	 * Enthält, wenn eine Eingabedatei ihr Ende erreicht true, ansonsten enthält eof immer false. Um dies 
	 * sicherzustellen kann nicht von ausserhalb auf dieses Attribut zugegriffen werden, sondern ein Zugriff
	 *  muss über die Methode eof erfolgen.
	 */
	private boolean eof = false;
	
	/**
	 * Getter-Methode für eof. Achtung boolean-Getter-Methoden beginnen immer mit "is" anstatt mit "get".
	 * @return boolean Angabe ob Ende der Datei erreicht.
	 */
	public boolean isEof() {
		return eof;
	}
	
	/**
	 * Diese Methode bekommt den Dateinamen übergeben, liest die Datei ein und erstellt ein
	 * BufferedReader-Objekt.
	 * 
	 * @param dateiname Der Dateiname muss als String übergeben werden.
	 */
	public void dateiEinlesen(String dateiname) {
		try {
			datei = new BufferedReader(new FileReader(dateiname)); //Einlesen der Datei in ein
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * Diese Methode dient dem Einlesen einer Zeile des BufferedReader-Objekts. Sind alle Zeilen eingelesen wird
	 * die Datei geschlossen.
	 * 
	 * @return String Gibt die eingelesene Zeile als String zurück. 
	 */
	public String zeileLesen() {
		try {
			String zeile = new String(""); //Deklarierung und Initialisierung eines String-Objekts zur Aufnahme einer Zeile
			zeile = datei.readLine();  //einlesen einer Zeile
			if (zeile == null) {
				eof = true; //eof (EndOfFile) auf true setzen
				datei.close();  //Schließen der Datei, wichtig um Datenverlust zu verhindern, speziell nach Schreibvorgängen
				return zeile; //zurückgeben des Strings
			}
			else {
				return zeile; //zurückgeben des Strings
			}
		} catch (IOException e) {
			e.printStackTrace();
			return "";
		}
	}
}
